package com.ak.demo.config;

import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.stereotype.Service;

@Configuration
public class MyScheduler {

    @Autowired
    SchedulerFactoryBean schedulerFactoryBean;

    @Bean("MyScheduler")
    public Scheduler scheduleJobs() throws SchedulerException {
        Scheduler scheduler = schedulerFactoryBean.getScheduler();
        startJob1(scheduler);
        startJob2(scheduler);
        return scheduler;
    }

    private void startJob1(Scheduler scheduler) throws SchedulerException {
        JobDetail job = JobBuilder.newJob(LoginJob.class)
                // 放入job 业务中的数据
                // 参数一： 任务的实例（唯一），任务组的名称
                .withIdentity("myjob1", "mygroup")
                .build();

        //创建一个Trigger
        Trigger trigger = TriggerBuilder.newTrigger()
                // 触发器的名称 ，参数二：触发器的 组
                .withIdentity("trigger1", "group1")
                // 设置
                .withSchedule(
                        CronScheduleBuilder.cronSchedule("0 9 0 * * ?"))
                .build();
        // 添加第一个任务
        scheduler.scheduleJob(job, trigger);
    }

    private void startJob2(Scheduler scheduler) throws SchedulerException {
        // 第二个每65秒拜访一下连接
        JobDetail job2 = JobBuilder.newJob(VisitJob.class)
                // 放入job 业务中的数据
                // 参数一： 任务的实例（唯一），任务组的名称
                .withIdentity("myjob2", "mygroup2")
                .build();

        Trigger trigger2 = TriggerBuilder.newTrigger()
                // 触发器的名称 ，参数二：触发器的 组
                .withIdentity("trigger2", "group1")
                // 设置
                .withSchedule(
                        SimpleScheduleBuilder
                                .simpleSchedule()
                                // 3秒钟重复 执行一次
                                .withIntervalInSeconds(65)
                                // 一直重复下去
                                .repeatForever())
                .startNow()
                .build();
        //
        scheduler.scheduleJob(job2, trigger2);
    }
}